--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / map / MapPage.vue
Displaying Raw • Download
meshchatx/src/frontend/components/map/MapPage.vue 23dbe7b7893320761e14aaf1ccc36d1c75c78596 (23dbe7b7) Text, 60.22 KB
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col h-full w-full bg-white dark:bg-zinc-950 overflow-hidden"Tb4b4b4>
T8b949e<!-- header -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center px-4 py-2 border-b border-gray-200 dark:border-zinc-800 bg-white/80 dark:bg-zinc-900/80 backdrop-blur z-10 relative"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"map" Te6edf3classTff7b72=Ta5d6ff"size-6 text-blue-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72h1 Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h1Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"ml-auto flex items-center space-x-2"Tb4b4b4>
T8b949e<!-- export tool toggle -->
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3offlineEnabledTa5d6ff"
Te6edf3refTff7b72=Ta5d6ff"exportButton"
Te6edf3classTff7b72=Ta5d6ff"p-2 rounded-lg transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3isExportMode
Tff7b72? Ta5d6ff'bg-blue-500 text-white shadow-sm'
Tff7b72: Ta5d6ff'text-gray-500 hover:bg-gray-100 dark:hover:bg-zinc-800'
Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.export_area'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleExportModeTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"crop-free" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
T8b949e<!-- offline/online toggle -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center bg-gray-100 dark:bg-zinc-800 rounded-lg p-1"Tb4b4b4>
Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Tff7b72!Te6edf3offlineEnabled
Tff7b72? Ta5d6ff'bg-white dark:bg-zinc-700 shadow-sm text-blue-600 dark:text-blue-400'
Tff7b72: Ta5d6ff'text-gray-500 dark:text-zinc-400'
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1 text-sm font-medium rounded-md transition-all"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleOfflineTb4b4b4(Tff7b72falseTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.online_mode"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3offlineEnabled
Tff7b72? Ta5d6ff'bg-white dark:bg-zinc-700 shadow-sm text-blue-600 dark:text-blue-400'
Tff7b72: Ta5d6ff'text-gray-500 dark:text-zinc-400'
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1 text-sm font-medium rounded-md transition-all"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3hasOfflineMapTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleOfflineTb4b4b4(Tff7b72trueTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.offline_mode"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- upload button (desktop only) -->
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"hidden sm:flex items-center space-x-1 px-3 py-1.5 bg-blue-500 hover:bg-blue-600 text-white rounded-lg shadow-sm transition-colors text-sm font-medium"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$refsTb4b4b4.Te6edf3fileInputTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"upload" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.upload_mbtiles"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72input Te6edf3refTff7b72=Ta5d6ff"fileInput" Te6edf3typeTff7b72=Ta5d6ff"file" Te6edf3acceptTff7b72=Ta5d6ff".mbtiles" Te6edf3classTff7b72=Ta5d6ff"hidden" Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onFileSelectedTa5d6ff" Tb4b4b4/Tb4b4b4>
T8b949e<!-- settings button -->
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-500 hover:bg-gray-100 dark:hover:bg-zinc-800 rounded-full transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isSettingsOpen Tff7b72= Tff7b72!Te6edf3isSettingsOpenTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"cog" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- map container -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative flex-1 min-h-0"Tb4b4b4>
T8b949e<!-- search bar -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3offlineEnabledTa5d6ff"
Te6edf3refTff7b72=Ta5d6ff"searchContainer"
Te6edf3classTff7b72=Ta5d6ff"absolute top-4 left-4 right-4 sm:left-auto sm:right-4 sm:w-80 z-30"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center bg-white dark:bg-zinc-900 rounded-lg shadow-lg border border-gray-200 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3searchQueryTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"flex-1 px-3 py-2 bg-transparent text-gray-900 dark:text-zinc-100 placeholder-gray-400 focus:outline-none text-sm"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.search_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3onSearchInputTa5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTff7b72=Ta5d6ff"Te6edf3performSearchTa5d6ff"
Tb4b4b4@Te6edf3focusTff7b72=Ta5d6ff"Te6edf3isSearchFocused Tff7b72= Tff7b72trueTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3searchQueryTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3clearSearchTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 text-blue-500 hover:text-blue-600 disabled:text-gray-300"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3searchQuery Tff7b72|| Te6edf3isSearchingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3performSearchTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isSearching Tff7b72? Ta5d6ff'loading' Tff7b72: Ta5d6ff'magnify'Ta5d6ff"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'size-5'Tb4b4b4, Tb4b4b4{ Ta5d6ff'animate-spin'Tff7b72: Te6edf3isSearching Tb4b4b4}Tb4b4b4]Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- search results dropdown -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isSearchFocused Tff7b72&& Tb4b4b4(Te6edf3searchResultsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72|| Te6edf3searchErrorTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute top-full left-0 right-0 mt-2 bg-white dark:bg-zinc-900 rounded-lg shadow-xl border border-gray-200 dark:border-zinc-800 max-h-64 overflow-y-auto z-40"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3searchErrorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"p-4 text-sm text-red-500"Tb4b4b4>
Tff7b72{{ Te6edf3searchError Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3resultTb4b4b4, Te6edf3indexTb4b4b4) Tff7b72in Te6edf3searchResultsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3indexTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full px-4 py-3 text-left hover:bg-gray-100 dark:hover:bg-zinc-800 border-b border-gray-100 dark:border-zinc-800 last:border-b-0 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3selectSearchResultTb4b4b4(Te6edf3resultTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-medium text-gray-900 dark:text-zinc-100 text-sm"Tb4b4b4>
Tff7b72{{ Te6edf3resultTb4b4b4.Te6edf3display_name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-400 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3resultTb4b4b4.Te6edf3type Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3refTff7b72=Ta5d6ff"mapContainer" Te6edf3classTff7b72=Ta5d6ff"absolute inset-0" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'cursor-crosshair'Tff7b72: Te6edf3isExportMode Tb4b4b4}Ta5d6ff"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- export instructions overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isExportMode Tff7b72&& Tff7b72!Te6edf3selectedBboxTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute top-4 left-1/2 -translate-x-1/2 z-20 px-4 py-2 bg-blue-600 text-white rounded-full shadow-lg font-medium text-sm animate-bounce"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.export_instructions"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- export configuration overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isExportMode Tff7b72&& Te6edf3selectedBboxTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute top-4 left-1/2 -translate-x-1/2 z-20 w-80 bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-800 overflow-hidden"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 border-b border-gray-200 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.export_area"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"text-gray-500 hover:text-gray-700 dark:hover:text-zinc-300" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3cancelExportTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"map.min_zoom"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3exportMinZoomTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"20"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"map.max_zoom"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3exportMaxZoomTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"20"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between items-center text-sm"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-600 dark:text-zinc-400"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.tile_count"Tb4b4b4) Tff7b72}}:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-bold text-blue-600"Tb4b4b4>Tff7b72{{ Te6edf3estimatedTiles Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isExportingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex-1 py-2 bg-gray-200 hover:bg-gray-300 dark:bg-zinc-700 dark:hover:bg-zinc-600 disabled:bg-gray-100 dark:disabled:bg-zinc-800 text-gray-900 dark:text-zinc-100 rounded-lg font-bold transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3cancelExportTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isExportingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex-1 py-2 bg-blue-500 hover:bg-blue-600 disabled:bg-blue-300 text-white rounded-lg font-bold transition-colors shadow-md"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3startExportTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.start_export"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- export progress overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute bottom-4 right-4 z-20 w-72 bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-800 p-4 space-y-3 animate-in slide-in-from-bottom-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between items-center"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-bold text-sm text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{
Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"completed" Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"map.download_ready"Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"map.exporting"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff'completed' Tff7b72|| Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff'failed'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3exportStatus Tff7b72= Tff7b72nullTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72!== Ta5d6ff'completed' Tff7b72&& Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72!== Ta5d6ff'failed'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full h-2 bg-gray-100 dark:bg-zinc-800 rounded-full overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"h-full bg-blue-500 transition-all duration-300"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3widthTff7b72: Te6edf3exportStatusTb4b4b4.Te6edf3progress Tff7b72+ Ta5d6ff'%' Tb4b4b4}Ta5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between text-[10px] text-gray-500 mt-1 uppercase font-bold tracking-wider"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3exportStatusTb4b4b4.Te6edf3current Tff7b72}} / Tff7b72{{ Te6edf3exportStatusTb4b4b4.Te6edf3total Tff7b72}} tilesTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3exportStatusTb4b4b4.Te6edf3progress Tff7b72}}%Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff'completed'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72a
Tb4b4b4:Te6edf3hrefTff7b72=Ta5d6ff"Ta5d6ff`Ta5d6ff/api/v1/map/export/Tffd700${Te6edf3exportIdTffd700}Ta5d6ff/downloadTa5d6ff`Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-center space-x-2 w-full py-2 bg-emerald-500 hover:bg-emerald-600 text-white rounded-lg font-bold transition-colors shadow-md"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"download" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.download_now"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff'failed'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-red-500 bg-red-50 dark:bg-red-950/20 p-2 rounded-lg"
Tb4b4b4>
Tff7b72{{ Te6edf3exportStatusTb4b4b4.Te6edf3error Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- loading overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isUploadingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-20 flex items-center justify-center bg-white/50 dark:bg-black/50 backdrop-blur-sm"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"bg-white dark:bg-zinc-900 p-6 rounded-xl shadow-xl flex flex-col items-center space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"animate-spin rounded-full h-12 w-12 border-4 border-blue-500 border-t-transparent"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-gray-900 dark:text-zinc-100 font-medium"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.uploading"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- no map warning -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3offlineEnabled Tff7b72&& Tff7b72!Te6edf3hasOfflineMapTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-20 flex items-center justify-center p-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"max-w-md bg-white dark:bg-zinc-900 p-6 rounded-xl shadow-xl border border-amber-200 dark:border-amber-900/50 flex flex-col items-center text-center space-y-4"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"alert-circle" Te6edf3classTff7b72=Ta5d6ff"size-12 text-amber-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-gray-900 dark:text-zinc-100 font-medium"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.no_map_loaded"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 bg-amber-500 hover:bg-amber-600 text-white rounded-lg transition-colors font-medium"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$refsTb4b4b4.Te6edf3fileInputTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.upload_mbtiles"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- map info overlay -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"absolute bottom-4 left-4 z-10 space-y-2 pointer-events-none"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3metadata Tff7b72&& Te6edf3metadataTb4b4b4.Te6edf3name Tff7b72&& Tff7b72!Te6edf3metadataTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff'Map Export'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-white/80 dark:bg-zinc-900/80 backdrop-blur border border-gray-200 dark:border-zinc-800 p-2 rounded-lg text-xs text-gray-600 dark:text-zinc-400 pointer-events-auto shadow-sm"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100 mb-1"Tb4b4b4>
Tff7b72{{ Te6edf3metadataTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3metadataTb4b4b4.Te6edf3attributionTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"max-w-xs overflow-hidden text-ellipsis whitespace-nowrap"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3metadataTb4b4b4.Te6edf3attributionTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3metadataTb4b4b4.Te6edf3attribution Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Lat/Lon Box -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-white/80 dark:bg-zinc-900/80 backdrop-blur border border-gray-200 dark:border-zinc-800 p-2 rounded-lg text-[10px] font-mono text-gray-600 dark:text-zinc-400 pointer-events-auto shadow-sm flex flex-col space-y-0.5"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between space-x-4"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"opacity-50 uppercase tracking-tighter"Tb4b4b4>LatTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3currentCenterTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between space-x-4"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"opacity-50 uppercase tracking-tighter"Tb4b4b4>LonTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3currentCenterTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- controls overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isSettingsOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute top-4 right-4 z-20 w-64 bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-800 overflow-hidden"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 border-b border-gray-200 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"app.settings"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-gray-500 hover:text-gray-700 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isSettingsOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"w-full flex items-center justify-center space-x-2 px-3 py-2 bg-gray-100 hover:bg-gray-200 dark:bg-zinc-800 dark:hover:bg-zinc-700 text-gray-900 dark:text-zinc-100 rounded-lg transition-colors text-sm font-medium"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3setAsDefaultViewTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"pin" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.set_as_default"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3offlineEnabledTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"border-t border-gray-100 dark:border-zinc-800 pt-4 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"map.tile_server_url"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3tileServerUrlTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.tile_server_url_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Te6edf3saveTileServerUrlTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.tile_server_url_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"map.nominatim_api_url"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3nominatimApiUrlTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.nominatim_api_url_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Te6edf3saveNominatimApiUrlTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.nominatim_api_url_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between py-2 border-t border-gray-100 dark:border-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-700 dark:text-zinc-300"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.caching_enabled"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72Toggle Tb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3cachingEnabledTa5d6ff" Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3toggleCachingTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"border-t border-gray-100 dark:border-zinc-800 pt-4 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"
Tb4b4b4>MBTiles Storage DirectoryTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3mbtilesDirTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Te6edf3placeholderTff7b72=Ta5d6ff"Default storage directory"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Te6edf3saveMBTilesDirTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3mbtilesListTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Available MapsTb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-h-48 overflow-y-auto space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3file Tff7b72in Te6edf3mbtilesListTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3fileTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between p-2 rounded-lg bg-gray-50 dark:bg-zinc-800/50 border border-gray-200 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col min-w-0 flex-1 mr-2"Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium text-gray-900 dark:text-zinc-100 truncate"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3fileTb4b4b4.Te6edf3nameTa5d6ff"
Tb4b4b4>Tff7b72{{ Te6edf3fileTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-500"
Tb4b4b4>Tff7b72{{ Tb4b4b4(Te6edf3fileTb4b4b4.Te6edf3size Tff7b72/ T79c0ff1024 Tff7b72/ T79c0ff1024Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4) Tff7b72}} MBTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-1"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3fileTb4b4b4.Te6edf3is_activeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-1 text-blue-500 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded transition-colors"
Te6edf3titleTff7b72=Ta5d6ff"Set as active"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3setActiveMBTilesTb4b4b4(Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"check" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"p-1 text-emerald-500" Te6edf3titleTff7b72=Ta5d6ff"Active"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"check-circle" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-1 text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20 rounded transition-colors"
Te6edf3titleTff7b72=Ta5d6ff"Delete"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3deleteMBTilesTb4b4b4(Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"delete" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"w-full px-3 py-2 bg-red-50 hover:bg-red-100 dark:bg-red-950/20 dark:hover:bg-red-900/30 text-red-600 dark:text-red-400 rounded-lg transition-colors text-xs font-bold uppercase tracking-wider"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3clearCacheTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.clear_cache"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500 space-y-1 pt-2 border-t border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.zoom"Tb4b4b4) Tff7b72}}:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono"Tb4b4b4>Tff7b72{{ Te6edf3currentZoomTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Lat:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono"Tb4b4b4>Tff7b72{{ Te6edf3currentCenterTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff5Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Lon:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono"Tb4b4b4>Tff7b72{{ Te6edf3currentCenterTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff5Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- onboarding tooltip -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showOnboardingTooltipTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[100] pointer-events-none"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dismissOnboardingTooltipTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 bg-black/50 pointer-events-auto"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3refTff7b72=Ta5d6ff"tooltipElement"
Te6edf3classTff7b72=Ta5d6ff"absolute bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-800 p-4 pointer-events-auto max-w-xs sm:max-w-sm"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Te6edf3tooltipStyleTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start justify-between mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100 text-sm"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.onboarding_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dismissOnboardingTooltipTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-zinc-400 mb-3"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.onboarding_text"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"w-full px-3 py-2 bg-blue-500 hover:bg-blue-600 text-white rounded-lg transition-colors text-sm font-medium"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dismissOnboardingTooltipTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.onboarding_got_it"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3arrowPath Tff7b72&& Tff7b72!Te6edf3isMobileScreenTa5d6ff"
Te6edf3refTff7b72=Ta5d6ff"arrowElement"
Te6edf3classTff7b72=Ta5d6ff"absolute pointer-events-none"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Te6edf3arrowStyleTa5d6ff"
Tb4b4b4:Te6edf3widthTff7b72=Ta5d6ff"Te6edf3arrowSvgWidthTa5d6ff"
Tb4b4b4:Te6edf3heightTff7b72=Ta5d6ff"Te6edf3arrowSvgHeightTa5d6ff"
Tb4b4b4:Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff`Ta5d6ff0 0 Tffd700${Te6edf3arrowSvgWidthTffd700}Ta5d6ff Tffd700${Te6edf3arrowSvgHeightTffd700}Ta5d6ff`Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72path Tb4b4b4:Te6edf3dTff7b72=Ta5d6ff"Te6edf3arrowPathTa5d6ff" Te6edf3strokeTff7b72=Ta5d6ff"#3b82f6" Te6edf3stroke-widthTff7b72=Ta5d6ff"3" Te6edf3fillTff7b72=Ta5d6ff"none" Te6edf3marker-endTff7b72=Ta5d6ff"url(#arrowhead)" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72defsTb4b4b4>
Tb4b4b4<Tff7b72marker Te6edf3idTff7b72=Ta5d6ff"arrowhead" Te6edf3markerWidthTff7b72=Ta5d6ff"10" Te6edf3markerHeightTff7b72=Ta5d6ff"10" Te6edf3refXTff7b72=Ta5d6ff"9" Te6edf3refYTff7b72=Ta5d6ff"3" Te6edf3orientTff7b72=Ta5d6ff"auto"Tb4b4b4>
Tb4b4b4<Tff7b72polygon Te6edf3pointsTff7b72=Ta5d6ff"0 0, 10 3, 0 6" Te6edf3fillTff7b72=Ta5d6ff"#3b82f6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72markerTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72defsTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- floating upload button (mobile only) -->
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"sm:hidden fixed bottom-4 right-4 z-30 p-4 bg-blue-500 hover:bg-blue-600 text-white rounded-full shadow-lg transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.upload_mbtiles'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$refsTb4b4b4.Te6edf3fileInputTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"upload" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Ta5d6ff"ol/ol.css"Tb4b4b4;
Tff7b72import Tffa657Map Tff7b72from Ta5d6ff"ol/Map"Tb4b4b4;
Tff7b72import Te6edf3View Tff7b72from Ta5d6ff"ol/View"Tb4b4b4;
Tff7b72import Te6edf3TileLayer Tff7b72from Ta5d6ff"ol/layer/Tile"Tb4b4b4;
Tff7b72import Te6edf3XYZ Tff7b72from Ta5d6ff"ol/source/XYZ"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3fromLonLatTb4b4b4, Te6edf3toLonLat Tb4b4b4} Tff7b72from Ta5d6ff"ol/proj"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3defaults Tff7b72as Te6edf3defaultControls Tb4b4b4} Tff7b72from Ta5d6ff"ol/control"Tb4b4b4;
Tff7b72import Te6edf3DragBox Tff7b72from Ta5d6ff"ol/interaction/DragBox"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3TileCache Tff7b72from Ta5d6ff"../../js/TileCache"Tb4b4b4;
Tff7b72import Te6edf3Toggle Tff7b72from Ta5d6ff"../forms/Toggle.vue"Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"MapPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3ToggleTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3mapTff7b72: Tff7b72nullTb4b4b4,
Te6edf3offlineEnabledTff7b72: Tff7b72falseTb4b4b4,
Te6edf3hasOfflineMapTff7b72: Tff7b72falseTb4b4b4,
Te6edf3metadataTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isUploadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isSettingsOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3currentCenterTff7b72: Tb4b4b4[T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4]Tb4b4b4,
Te6edf3currentZoomTff7b72: T79c0ff2Tb4b4b4,
Te6edf3configTff7b72: Tff7b72nullTb4b4b4,
T8b949e// caching
Te6edf3cachingEnabledTff7b72: Tff7b72trueTb4b4b4,
T8b949e// tile server
Te6edf3tileServerUrlTff7b72: Ta5d6ff"https://tile.openstreetmap.org/{z}/{x}/{y}.png"Tb4b4b4,
T8b949e// search
Te6edf3searchQueryTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3searchResultsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3isSearchingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isSearchFocusedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3searchErrorTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nominatimApiUrlTff7b72: Ta5d6ff"https://nominatim.openstreetmap.org"Tb4b4b4,
Te6edf3searchTimeoutTff7b72: Tff7b72nullTb4b4b4,
T8b949e// export mode
Te6edf3isExportModeTff7b72: Tff7b72falseTb4b4b4,
Te6edf3dragBoxTff7b72: Tff7b72nullTb4b4b4,
Te6edf3selectedBboxTff7b72: Tff7b72nullTb4b4b4,
Te6edf3exportMinZoomTff7b72: T79c0ff0Tb4b4b4,
Te6edf3exportMaxZoomTff7b72: T79c0ff10Tb4b4b4,
Te6edf3isExportingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3exportIdTff7b72: Tff7b72nullTb4b4b4,
Te6edf3exportStatusTff7b72: Tff7b72nullTb4b4b4,
Te6edf3exportIntervalTff7b72: Tff7b72nullTb4b4b4,
T8b949e// onboarding
Te6edf3showOnboardingTooltipTff7b72: Tff7b72falseTb4b4b4,
Te6edf3tooltipStyleTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3arrowStyleTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3arrowPathTff7b72: Tff7b72nullTb4b4b4,
Te6edf3arrowSvgWidthTff7b72: T79c0ff200Tb4b4b4,
Te6edf3arrowSvgHeightTff7b72: T79c0ff200Tb4b4b4,
Te6edf3isMobileScreenTff7b72: Tff7b72falseTb4b4b4,
T8b949e// MBTiles management
Te6edf3mbtilesListTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3mbtilesDirTff7b72: Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3estimatedTilesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedBboxTb4b4b4) Tff7b72return T79c0ff0Tb4b4b4;
Tff7b72const Tb4b4b4[Te6edf3minLonTb4b4b4, Te6edf3minLatTb4b4b4, Te6edf3maxLonTb4b4b4, Te6edf3maxLatTb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedBboxTb4b4b4;
Tff7b72let Te6edf3total Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3z Tff7b72= Tff7b72thisTb4b4b4.Te6edf3exportMinZoomTb4b4b4; Te6edf3z Tff7b72<= Tff7b72thisTb4b4b4.Te6edf3exportMaxZoomTb4b4b4; Te6edf3zTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3x1 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3lonToTileTb4b4b4(Te6edf3minLonTb4b4b4, Te6edf3zTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3x2 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3lonToTileTb4b4b4(Te6edf3maxLonTb4b4b4, Te6edf3zTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3y1 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3latToTileTb4b4b4(Te6edf3maxLatTb4b4b4, Te6edf3zTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3y2 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3latToTileTb4b4b4(Te6edf3minLatTb4b4b4, Te6edf3zTb4b4b4)Tb4b4b4;
Te6edf3total Tff7b72+= Tb4b4b4(Tffa657MathTb4b4b4.Te6edf3absTb4b4b4(Te6edf3x2 Tff7b72- Te6edf3x1Tb4b4b4) Tff7b72+ T79c0ff1Tb4b4b4) Tff7b72* Tb4b4b4(Tffa657MathTb4b4b4.Te6edf3absTb4b4b4(Te6edf3y2 Tff7b72- Te6edf3y1Tb4b4b4) Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3totalTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3initMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkOfflineMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Listen for moveend to update coordinates in UI
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"moveend"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3view Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentCenter Tff7b72= Te6edf3toLonLatTb4b4b4(Te6edf3viewTb4b4b4.Te6edf3getCenterTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentZoom Tff7b72= Te6edf3viewTb4b4b4.Te6edf3getZoomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Check if onboarding tooltip should be shown
Tff7b72thisTb4b4b4.Te6edf3checkOnboardingTooltipTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Add click outside handler for search
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3handleClickOutsideTb4b4b4)Tb4b4b4;
T8b949e// Check screen size for mobile
Tff7b72thisTb4b4b4.Te6edf3checkScreenSizeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"resize"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3checkScreenSizeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4) Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4) Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3handleClickOutsideTb4b4b4)Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"resize"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3checkScreenSizeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_offline_enabledTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3cachingEnabled Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_tile_cache_enabled Tff7b72!== Tff7b72undefined Tff7b72? Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_tile_cache_enabled Tff7b72: Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mbtilesDir Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_mbtiles_dir Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_tile_server_urlTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_tile_server_urlTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_nominatim_api_urlTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_nominatim_api_urlTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to load config"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/map/mbtiles"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mbtilesList Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to load MBTiles list"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3setActiveMBTilesTb4b4b4(Te6edf3filenameTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/map/mbtiles/active"Tb4b4b4, Tb4b4b4{ Te6edf3filename Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkOfflineMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Map source updated"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to set active map"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3deleteMBTilesTb4b4b4(Te6edf3filenameTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmTb4b4b4(Ta5d6ff`Ta5d6ffAre you sure you want to delete Tffd700${Te6edf3filenameTffd700}Ta5d6ff?Ta5d6ff`Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/map/mbtiles/Tffd700${Te6edf3filenameTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3metadata Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3metadataTb4b4b4.Te6edf3path Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3metadataTb4b4b4.Te6edf3pathTb4b4b4.Te6edf3endsWithTb4b4b4(Te6edf3filenameTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkOfflineMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"File deleted"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to delete file"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveMBTilesDirTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_mbtiles_dirTff7b72: Tff7b72thisTb4b4b4.Te6edf3mbtilesDirTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Storage directory saved"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save directory"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3initMapTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3defaultLat Tff7b72= Tffa657parseFloatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3map_default_lat Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3defaultLon Tff7b72= Tffa657parseFloatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3map_default_lon Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3defaultZoom Tff7b72= Tffa657parseIntTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3map_default_zoom Tff7b72|| T79c0ff2Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3map Tff7b72= Tff7b72new Tffa657MapTb4b4b4(Tb4b4b4{
Te6edf3targetTff7b72: Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3mapContainerTb4b4b4,
Te6edf3layersTff7b72: Tb4b4b4[
Tff7b72new Te6edf3TileLayerTb4b4b4(Tb4b4b4{
Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3getTileSourceTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3viewTff7b72: Tff7b72new Te6edf3ViewTb4b4b4(Tb4b4b4{
Te6edf3centerTff7b72: Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3defaultLonTb4b4b4, Te6edf3defaultLatTb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3zoomTff7b72: Te6edf3defaultZoomTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3controlsTff7b72: Te6edf3defaultControlsTb4b4b4(Tb4b4b4{
Te6edf3attributionTff7b72: Tff7b72falseTb4b4b4,
Te6edf3rotateTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentCenter Tff7b72= Tb4b4b4[Te6edf3defaultLonTb4b4b4, Te6edf3defaultLatTb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentZoom Tff7b72= Te6edf3defaultZoomTb4b4b4;
T8b949e// Setup dragBox for export
Tff7b72thisTb4b4b4.Te6edf3dragBox Tff7b72= Tff7b72new Te6edf3DragBoxTb4b4b4(Tb4b4b4{
Te6edf3conditionTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3isExportModeTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3dragBoxTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"boxend"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3extent Tff7b72= Tff7b72thisTb4b4b4.Te6edf3dragBoxTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getExtentTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3min Tff7b72= Te6edf3toLonLatTb4b4b4(Tb4b4b4[Te6edf3extentTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3extentTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3max Tff7b72= Te6edf3toLonLatTb4b4b4(Tb4b4b4[Te6edf3extentTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Te6edf3extentTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedBbox Tff7b72= Tb4b4b4[Te6edf3minTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3minTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Te6edf3maxTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3maxTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportMinZoom Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getZoomTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportMaxZoom Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportMinZoom Tff7b72+ T79c0ff3Tb4b4b4, T79c0ff18Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dragBoxTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isLocalUrlTb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3urlTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3urlObj Tff7b72= Tff7b72new Te6edf3URLTb4b4b4(Te6edf3urlTb4b4b4, Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3originTb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4(
Te6edf3urlObjTb4b4b4.Te6edf3hostname Tff7b72=== Ta5d6ff"localhost" Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostname Tff7b72=== Ta5d6ff"127.0.0.1" Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostname Tff7b72=== Ta5d6ff"::1" Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostnameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"192.168."Tb4b4b4) Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostnameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"10."Tb4b4b4) Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostnameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"172."Tb4b4b4) Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostnameTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".local"Tb4b4b4) Tff7b72||
Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"/"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"/"Tb4b4b4) Tff7b72|| Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"./"Tb4b4b4) Tff7b72|| Tff7b72!Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"http"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3isDefaultOnlineUrlTb4b4b4(Te6edf3urlTb4b4b4, Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3urlTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"tile"Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"tile.openstreetmap.org"Tb4b4b4) Tff7b72|| Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"openstreetmap.org"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"nominatim"Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"nominatim.openstreetmap.org"Tb4b4b4) Tff7b72|| Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"openstreetmap.org"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3checkApiConnectionTb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3url Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72let Te6edf3testUrl Tff7b72= Te6edf3urlTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"/"Tb4b4b4) Tff7b72? Te6edf3urlTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72-T79c0ff1Tb4b4b4) Tff7b72: Te6edf3urlTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3testUrlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"{z}"Tb4b4b4) Tff7b72|| Te6edf3testUrlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"{x}"Tb4b4b4) Tff7b72|| Te6edf3testUrlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"{y}"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3testUrl Tff7b72= Te6edf3testUrlTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"{z}"Tb4b4b4, Ta5d6ff"0"Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"{x}"Tb4b4b4, Ta5d6ff"0"Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"{y}"Tb4b4b4, Ta5d6ff"0"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3controller Tff7b72= Tff7b72new Te6edf3AbortControllerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3timeoutId Tff7b72= Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3controllerTb4b4b4.Te6edf3abortTb4b4b4(Tb4b4b4)Tb4b4b4, T79c0ff3000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3testUrlTb4b4b4, Tb4b4b4{
Te6edf3methodTff7b72: Ta5d6ff"HEAD"Tb4b4b4,
Te6edf3signalTff7b72: Te6edf3controllerTb4b4b4.Te6edf3signalTb4b4b4,
Te6edf3headersTff7b72: Tb4b4b4{
Ta5d6ff"User-Agent"Tff7b72: Ta5d6ff"ReticulumMeshChatX/1.0"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3clearTimeoutTb4b4b4(Te6edf3timeoutIdTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3responseTb4b4b4.Te6edf3ok Tff7b72|| Te6edf3responseTb4b4b4.Te6edf3status Tff7b72=== T79c0ff405 Tff7b72|| Te6edf3responseTb4b4b4.Te6edf3status Tff7b72=== T79c0ff404Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3getTileSourceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isOffline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4;
Tff7b72const Te6edf3defaultTileUrl Tff7b72= Ta5d6ff"https://tile.openstreetmap.org/{z}/{x}/{y}.png"Tb4b4b4;
Tff7b72const Te6edf3customTileUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72|| Te6edf3defaultTileUrlTb4b4b4;
Tff7b72const Te6edf3isCustomLocal Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Te6edf3customTileUrlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDefaultOnline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isDefaultOnlineUrlTb4b4b4(Te6edf3customTileUrlTb4b4b4, Ta5d6ff"tile"Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3tileUrlTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isOfflineTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isCustomLocal Tff7b72|| Tb4b4b4(Tff7b72!Te6edf3isDefaultOnline Tff7b72&& Te6edf3customTileUrl Tff7b72!== Te6edf3defaultTileUrlTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3tileUrl Tff7b72= Te6edf3customTileUrlTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3tileUrl Tff7b72= Ta5d6ff"/api/v1/map/tiles/{z}/{x}/{y}.png"Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3tileUrl Tff7b72= Te6edf3customTileUrlTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3source Tff7b72= Tff7b72new Te6edf3XYZTb4b4b4(Tb4b4b4{
Te6edf3urlTff7b72: Te6edf3tileUrlTb4b4b4,
Te6edf3crossOriginTff7b72: Ta5d6ff"anonymous"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3originalTileLoadFunction Tff7b72= Te6edf3sourceTb4b4b4.Te6edf3getTileLoadFunctionTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isOfflineTb4b4b4) Tb4b4b4{
Te6edf3sourceTb4b4b4.Te6edf3setTileLoadFunctionTb4b4b4(Tff7b72async Tb4b4b4(Te6edf3tileTb4b4b4, Te6edf3srcTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3srcTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3responseTb4b4b4.Te6edf3okTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3status Tff7b72=== T79c0ff404Tb4b4b4) Tb4b4b4{
Te6edf3tileTb4b4b4.Te6edf3setStateTb4b4b4(T79c0ff3Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffHTTP Tffd700${Te6edf3responseTb4b4b4.Te6edf3statusTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3blob Tff7b72= Tff7b72await Te6edf3responseTb4b4b4.Te6edf3blobTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3tileTb4b4b4.Te6edf3getImageTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3src Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3tileTb4b4b4.Te6edf3setStateTb4b4b4(T79c0ff3Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sourceTb4b4b4.Te6edf3setTileLoadFunctionTb4b4b4(Tff7b72async Tb4b4b4(Te6edf3tileTb4b4b4, Te6edf3srcTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3cachingEnabledTb4b4b4) Tb4b4b4{
Te6edf3originalTileLoadFunctionTb4b4b4(Te6edf3tileTb4b4b4, Te6edf3srcTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3cached Tff7b72= Tff7b72await Te6edf3TileCacheTb4b4b4.Te6edf3getTileTb4b4b4(Te6edf3srcTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cachedTb4b4b4) Tb4b4b4{
Te6edf3tileTb4b4b4.Te6edf3getImageTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3src Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3cachedTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3srcTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3responseTb4b4b4.Te6edf3okTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffHTTP Tffd700${Te6edf3responseTb4b4b4.Te6edf3statusTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3blob Tff7b72= Tff7b72await Te6edf3responseTb4b4b4.Te6edf3blobTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3TileCacheTb4b4b4.Te6edf3setTileTb4b4b4(Te6edf3srcTb4b4b4, Te6edf3blobTb4b4b4)Tb4b4b4;
Te6edf3tileTb4b4b4.Te6edf3getImageTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3src Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3originalTileLoadFunctionTb4b4b4(Te6edf3tileTb4b4b4, Te6edf3srcTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3sourceTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3checkOfflineMapTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/map/offline"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3metadata Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasOfflineMap Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hasOfflineMap Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3metadata Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3updateMapSourceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3layers Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getLayersTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3layersTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3layersTb4b4b4.Te6edf3pushTb4b4b4(
Tff7b72new Te6edf3TileLayerTb4b4b4(Tb4b4b4{
Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3getTileSourceTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3toggleOfflineTb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3enabled Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hasOfflineMapTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.no_map_loaded"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3defaultTileUrl Tff7b72= Ta5d6ff"https://tile.openstreetmap.org/{z}/{x}/{y}.png"Tb4b4b4;
Tff7b72const Te6edf3defaultNominatimUrl Tff7b72= Ta5d6ff"https://nominatim.openstreetmap.org"Tb4b4b4;
Tff7b72const Te6edf3isCustomTileLocal Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3tileServerUrlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDefaultTileOnline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isDefaultOnlineUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3tileServerUrlTb4b4b4, Ta5d6ff"tile"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hasCustomTile Tff7b72= Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72!== Te6edf3defaultTileUrlTb4b4b4;
Tff7b72const Te6edf3isCustomNominatimLocal Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDefaultNominatimOnline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isDefaultOnlineUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4, Ta5d6ff"nominatim"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hasCustomNominatim Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrl Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrl Tff7b72!== Te6edf3defaultNominatimUrlTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hasCustomTile Tff7b72&& Tff7b72!Te6edf3isCustomTileLocal Tff7b72&& Tff7b72!Te6edf3isDefaultTileOnlineTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isAccessible Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkApiConnectionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3tileServerUrlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isAccessibleTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.custom_tile_server_unavailable"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3hasCustomNominatim Tff7b72&& Tff7b72!Te6edf3isCustomNominatimLocal Tff7b72&& Tff7b72!Te6edf3isDefaultNominatimOnlineTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isAccessible Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkApiConnectionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isAccessibleTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.custom_nominatim_unavailable"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Te6edf3enabledTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isExportMode Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3clearSearchTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Persist setting
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_offline_enabledTff7b72: Te6edf3enabledTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save offline setting"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3toggleCachingTb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3cachingEnabled Tff7b72= Te6edf3enabledTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_tile_cache_enabledTff7b72: Te6edf3enabledTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save caching setting"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3toggleExportModeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isExportMode Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isExportModeTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isExportModeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedBbox Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3cancelExportTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedBbox Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExportMode Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3startExportTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedBboxTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExporting Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/map/export"Tb4b4b4, Tb4b4b4{
Te6edf3bboxTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedBboxTb4b4b4,
Te6edf3min_zoomTff7b72: Tff7b72thisTb4b4b4.Te6edf3exportMinZoomTb4b4b4,
Te6edf3max_zoomTff7b72: Tff7b72thisTb4b4b4.Te6edf3exportMaxZoomTb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff`Ta5d6ffMap Export Tffd700${Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toLocaleStringTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportId Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3export_idTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExportMode Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedBbox Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pollExportStatusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to start export"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExporting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3pollExportStatusTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4) Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/map/export/Tffd700${Tff7b72thisTb4b4b4.Te6edf3exportIdTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportStatus Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"completed" Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"failed"Tb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExporting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExporting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4, T79c0ff2000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3lonToTileTb4b4b4(Te6edf3lonTb4b4b4, Te6edf3zoomTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Tb4b4b4(Te6edf3lon Tff7b72+ T79c0ff180Tb4b4b4) Tff7b72/ T79c0ff360Tb4b4b4) Tff7b72* Tffa657MathTb4b4b4.Te6edf3powTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3zoomTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3latToTileTb4b4b4(Te6edf3latTb4b4b4, Te6edf3zoomTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(
Tb4b4b4(Tb4b4b4(T79c0ff1 Tff7b72- Tffa657MathTb4b4b4.Te6edf3logTb4b4b4(Tffa657MathTb4b4b4.Te6edf3tanTb4b4b4(Tb4b4b4(Te6edf3lat Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4) Tff7b72/ T79c0ff180Tb4b4b4) Tff7b72+ T79c0ff1 Tff7b72/ Tffa657MathTb4b4b4.Te6edf3cosTb4b4b4(Tb4b4b4(Te6edf3lat Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4) Tff7b72/ T79c0ff180Tb4b4b4)Tb4b4b4) Tff7b72/ Tffa657MathTb4b4b4.Te6edf3PITb4b4b4) Tff7b72/ T79c0ff2Tb4b4b4) Tff7b72*
Tffa657MathTb4b4b4.Te6edf3powTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3zoomTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onFileSelectedTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3file Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".mbtiles"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Please select an .mbtiles file"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isUploading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3formData Tff7b72= Tff7b72new Te6edf3FormDataTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3formDataTb4b4b4.Te6edf3appendTb4b4b4(Ta5d6ff"file"Tb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/map/offline"Tb4b4b4, Te6edf3formDataTb4b4b4, Tb4b4b4{
Te6edf3headersTff7b72: Tb4b4b4{
Ta5d6ff"Content-Type"Tff7b72: Ta5d6ff"multipart/form-data"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3metadata Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3metadataTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasOfflineMap Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.upload_success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
T8b949e// If the map has bounds, we might want to fit to them
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3metadataTb4b4b4.Te6edf3boundsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3bounds Tff7b72= Tff7b72thisTb4b4b4.Te6edf3metadataTb4b4b4.Te6edf3boundsTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff","Tb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Tffa657parseFloatTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3boundsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff4Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3extent Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3boundsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3boundsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4)Tb4b4b4, Tb4b4b4...Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3boundsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Te6edf3boundsTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4]Tb4b4b4)Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3fitTb4b4b4(Te6edf3extentTb4b4b4, Tb4b4b4{ Te6edf3paddingTff7b72: Tb4b4b4[T79c0ff20Tb4b4b4, T79c0ff20Tb4b4b4, T79c0ff20Tb4b4b4, T79c0ff20Tb4b4b4] Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3error Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3error Tff7b72|| Te6edf3eTb4b4b4.Te6edf3messageTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.upload_failed"Tb4b4b4) Tff7b72+ Ta5d6ff": " Tff7b72+ Te6edf3errorTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isUploading Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3value Tff7b72= Ta5d6ff""Tb4b4b4; T8b949e// Reset input
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3setAsDefaultViewTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3view Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3center Tff7b72= Te6edf3toLonLatTb4b4b4(Te6edf3viewTb4b4b4.Te6edf3getCenterTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3zoom Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3viewTb4b4b4.Te6edf3getZoomTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_default_latTff7b72: Te6edf3centerTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4,
Te6edf3map_default_lonTff7b72: Te6edf3centerTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4,
Te6edf3map_default_zoomTff7b72: Te6edf3zoomTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Default view saved"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save default view"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3clearCacheTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3TileCacheTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.cache_cleared"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to clear cache"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveTileServerUrlTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_tile_server_urlTff7b72: Tff7b72thisTb4b4b4.Te6edf3tileServerUrlTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.tile_server_saved"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save tile server URL"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveNominatimApiUrlTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_nominatim_api_urlTff7b72: Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.nominatim_api_saved"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save Nominatim API URL"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3checkOnboardingTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hasSeenOnboarding Tff7b72= Te6edf3localStorageTb4b4b4.Te6edf3getItemTb4b4b4(Ta5d6ff"map_onboarding_seen"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hasSeenOnboarding Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showOnboardingTooltip Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3positionOnboardingTooltipTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3positionOnboardingTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3exportButton Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3tooltipElementTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3exportButton Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3exportButtonTb4b4b4;
Tff7b72const Te6edf3tooltip Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3tooltipElementTb4b4b4;
Tff7b72const Te6edf3buttonRect Tff7b72= Te6edf3exportButtonTb4b4b4.Te6edf3getBoundingClientRectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3tooltipRect Tff7b72= Te6edf3tooltipTb4b4b4.Te6edf3getBoundingClientRectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isMobile Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72< T79c0ff640Tb4b4b4;
Tff7b72let Te6edf3tooltipLeftTb4b4b4, Te6edf3tooltipTopTb4b4b4;
Tff7b72let Te6edf3tooltipAboveButton Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isMobileTb4b4b4) Tb4b4b4{
Te6edf3tooltipLeft Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72/ T79c0ff2 Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72/ T79c0ff2Tb4b4b4;
Te6edf3tooltipTop Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3top Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3height Tff7b72- T79c0ff20Tb4b4b4;
Te6edf3tooltipAboveButton Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3tooltipTop Tff7b72< T79c0ff10Tb4b4b4) Tb4b4b4{
Te6edf3tooltipTop Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3bottom Tff7b72+ T79c0ff20Tb4b4b4;
Te6edf3tooltipAboveButton Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3tooltipLeft Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3left Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72- T79c0ff20Tb4b4b4;
Te6edf3tooltipTop Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3top Tff7b72+ Te6edf3buttonRectTb4b4b4.Te6edf3height Tff7b72/ T79c0ff2 Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3height Tff7b72/ T79c0ff2Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3tooltipTop Tff7b72< T79c0ff10Tb4b4b4) Te6edf3tooltipTop Tff7b72= T79c0ff10Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3tooltipLeft Tff7b72< T79c0ff10Tb4b4b4) Te6edf3tooltipLeft Tff7b72= T79c0ff10Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3tooltipLeft Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72> Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72- T79c0ff10Tb4b4b4) Tb4b4b4{
Te6edf3tooltipLeft Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72- T79c0ff10Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3tooltipStyle Tff7b72= Tb4b4b4{
Te6edf3leftTff7b72: Ta5d6ff`Tffd700${Te6edf3tooltipLeftTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Te6edf3topTff7b72: Ta5d6ff`Tffd700${Te6edf3tooltipTopTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3buttonCenterY Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3top Tff7b72+ Te6edf3buttonRectTb4b4b4.Te6edf3height Tff7b72/ T79c0ff2Tb4b4b4;
Tff7b72const Te6edf3tooltipCenterX Tff7b72= Te6edf3tooltipLeft Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72/ T79c0ff2Tb4b4b4;
Tff7b72const Te6edf3tooltipCenterY Tff7b72= Te6edf3tooltipTop Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3height Tff7b72/ T79c0ff2Tb4b4b4;
Tff7b72const Te6edf3arrowStartX Tff7b72= Te6edf3isMobile Tff7b72? Te6edf3tooltipCenterX Tff7b72: Te6edf3tooltipLeft Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3widthTb4b4b4;
Tff7b72const Te6edf3arrowStartY Tff7b72= Te6edf3isMobile
Tff7b72? Te6edf3tooltipAboveButton
Tff7b72? Te6edf3tooltipTop Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3height
Tff7b72: Te6edf3tooltipTop
Tff7b72: Te6edf3tooltipCenterYTb4b4b4;
Tff7b72const Te6edf3arrowEndX Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3left Tff7b72+ Te6edf3buttonRectTb4b4b4.Te6edf3width Tff7b72* T79c0ff0.25Tb4b4b4;
Tff7b72const Te6edf3arrowEndY Tff7b72= Te6edf3buttonCenterYTb4b4b4;
Tff7b72const Te6edf3minX Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3arrowStartXTb4b4b4, Te6edf3arrowEndXTb4b4b4) Tff7b72- T79c0ff20Tb4b4b4;
Tff7b72const Te6edf3maxX Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3arrowStartXTb4b4b4, Te6edf3arrowEndXTb4b4b4) Tff7b72+ T79c0ff20Tb4b4b4;
Tff7b72const Te6edf3minY Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3arrowStartYTb4b4b4, Te6edf3arrowEndYTb4b4b4) Tff7b72- T79c0ff20Tb4b4b4;
Tff7b72const Te6edf3maxY Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3arrowStartYTb4b4b4, Te6edf3arrowEndYTb4b4b4) Tff7b72+ T79c0ff20Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3arrowSvgWidth Tff7b72= Te6edf3maxX Tff7b72- Te6edf3minXTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3arrowSvgHeight Tff7b72= Te6edf3maxY Tff7b72- Te6edf3minYTb4b4b4;
Tff7b72const Te6edf3adjustedStartX Tff7b72= Te6edf3arrowStartX Tff7b72- Te6edf3minXTb4b4b4;
Tff7b72const Te6edf3adjustedStartY Tff7b72= Te6edf3arrowStartY Tff7b72- Te6edf3minYTb4b4b4;
Tff7b72const Te6edf3adjustedEndX Tff7b72= Te6edf3arrowEndX Tff7b72- Te6edf3minXTb4b4b4;
Tff7b72const Te6edf3adjustedEndY Tff7b72= Te6edf3arrowEndY Tff7b72- Te6edf3minYTb4b4b4;
Tff7b72const Te6edf3controlX1 Tff7b72= Te6edf3adjustedStartX Tff7b72+ Tb4b4b4(Te6edf3adjustedEndX Tff7b72- Te6edf3adjustedStartXTb4b4b4) Tff7b72* T79c0ff0.5Tb4b4b4;
Tff7b72const Te6edf3controlY1 Tff7b72= Te6edf3adjustedStartY Tff7b72+ Tb4b4b4(Te6edf3adjustedEndY Tff7b72- Te6edf3adjustedStartYTb4b4b4) Tff7b72* T79c0ff0.3Tb4b4b4;
Tff7b72const Te6edf3controlX2 Tff7b72= Te6edf3adjustedStartX Tff7b72+ Tb4b4b4(Te6edf3adjustedEndX Tff7b72- Te6edf3adjustedStartXTb4b4b4) Tff7b72* T79c0ff0.7Tb4b4b4;
Tff7b72const Te6edf3controlY2 Tff7b72= Te6edf3adjustedStartY Tff7b72+ Tb4b4b4(Te6edf3adjustedEndY Tff7b72- Te6edf3adjustedStartYTb4b4b4) Tff7b72* T79c0ff0.7Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3arrowPath Tff7b72= Ta5d6ff`Ta5d6ffM Tffd700${Te6edf3adjustedStartXTffd700}Ta5d6ff Tffd700${Te6edf3adjustedStartYTffd700}Ta5d6ff C Tffd700${Te6edf3controlX1Tffd700}Ta5d6ff Tffd700${Te6edf3controlY1Tffd700}Ta5d6ff, Tffd700${Te6edf3controlX2Tffd700}Ta5d6ff Tffd700${Te6edf3controlY2Tffd700}Ta5d6ff, Tffd700${Te6edf3adjustedEndXTffd700}Ta5d6ff Tffd700${Te6edf3adjustedEndYTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3arrowStyle Tff7b72= Tb4b4b4{
Te6edf3leftTff7b72: Ta5d6ff`Tffd700${Te6edf3minXTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Te6edf3topTff7b72: Ta5d6ff`Tffd700${Te6edf3minYTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3dismissOnboardingTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showOnboardingTooltip Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3localStorageTb4b4b4.Te6edf3setItemTb4b4b4(Ta5d6ff"map_onboarding_seen"Tb4b4b4, Ta5d6ff"true"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onSearchInputTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3performSearchTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3searchQuery Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isSearchingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3defaultNominatimUrl Tff7b72= Ta5d6ff"https://nominatim.openstreetmap.org"Tb4b4b4;
Tff7b72const Te6edf3isCustomLocal Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDefaultOnline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isDefaultOnlineUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4, Ta5d6ff"nominatim"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isCustomLocal Tff7b72|| Tb4b4b4(Tff7b72!Te6edf3isDefaultOnline Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrl Tff7b72!== Te6edf3defaultNominatimUrlTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isAccessible Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkApiConnectionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isAccessibleTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_offline_error"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_offline_error"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isSearching Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchResults Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3apiUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"/"Tb4b4b4)
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72-T79c0ff1Tb4b4b4)
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Ta5d6ff`Tffd700${Te6edf3apiUrlTffd700}Ta5d6ff/search?format=json&q=Tffd700${Tffa657encodeURIComponentTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchQueryTb4b4b4)Tffd700}Ta5d6ff&limit=10&addressdetails=1Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3urlTb4b4b4, Tb4b4b4{
Te6edf3headersTff7b72: Tb4b4b4{
Ta5d6ff"User-Agent"Tff7b72: Ta5d6ff"ReticulumMeshChatX/1.0"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3responseTb4b4b4.Te6edf3okTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffHTTP Tffd700${Te6edf3responseTb4b4b4.Te6edf3statusTffd700}Ta5d6ff: Tffd700${Te6edf3responseTb4b4b4.Te6edf3statusTextTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3data Tff7b72= Tff7b72await Te6edf3responseTb4b4b4.Te6edf3jsonTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72&& Te6edf3dataTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchResults Tff7b72= Te6edf3dataTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Te6edf3display_nameTff7b72: Te6edf3itemTb4b4b4.Te6edf3display_nameTb4b4b4,
Te6edf3latTff7b72: Tffa657parseFloatTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3latTb4b4b4)Tb4b4b4,
Te6edf3lonTff7b72: Tffa657parseFloatTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3lonTb4b4b4)Tb4b4b4,
Te6edf3typeTff7b72: Te6edf3itemTb4b4b4.Te6edf3type Tff7b72|| Te6edf3itemTb4b4b4.Tff7b72class Tff7b72|| Ta5d6ff""Tb4b4b4,
Te6edf3boundingboxTff7b72: Te6edf3itemTb4b4b4.Te6edf3boundingboxTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_no_results"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Search error:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3eTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Failed to fetch"Tb4b4b4) Tff7b72|| Te6edf3eTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"NetworkError"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_connection_error"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_error"Tb4b4b4) Tff7b72+ Ta5d6ff": " Tff7b72+ Te6edf3eTb4b4b4.Te6edf3messageTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSearching Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3selectSearchResultTb4b4b4(Te6edf3resultTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3view Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3center Tff7b72= Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3resultTb4b4b4.Te6edf3lonTb4b4b4, Te6edf3resultTb4b4b4.Te6edf3latTb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3resultTb4b4b4.Te6edf3boundingbox Tff7b72&& Te6edf3resultTb4b4b4.Te6edf3boundingboxTb4b4b4.Te6edf3length Tff7b72=== T79c0ff4Tb4b4b4) Tb4b4b4{
Tff7b72const Tb4b4b4[Te6edf3minLatTb4b4b4, Te6edf3maxLatTb4b4b4, Te6edf3minLonTb4b4b4, Te6edf3maxLonTb4b4b4] Tff7b72= Te6edf3resultTb4b4b4.Te6edf3boundingboxTb4b4b4.Te6edf3mapTb4b4b4(Tffa657parseFloatTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3extent Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3minLonTb4b4b4, Te6edf3minLatTb4b4b4]Tb4b4b4)Tb4b4b4, Tb4b4b4...Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3maxLonTb4b4b4, Te6edf3maxLatTb4b4b4]Tb4b4b4)Tb4b4b4]Tb4b4b4;
Te6edf3viewTb4b4b4.Te6edf3fitTb4b4b4(Te6edf3extentTb4b4b4, Tb4b4b4{
Te6edf3paddingTff7b72: Tb4b4b4[T79c0ff50Tb4b4b4, T79c0ff50Tb4b4b4, T79c0ff50Tb4b4b4, T79c0ff50Tb4b4b4]Tb4b4b4,
Te6edf3durationTff7b72: T79c0ff500Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3viewTb4b4b4.Te6edf3animateTb4b4b4(Tb4b4b4{
Te6edf3centerTff7b72: Te6edf3centerTb4b4b4,
Te6edf3zoomTff7b72: Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3viewTb4b4b4.Te6edf3getZoomTb4b4b4(Tb4b4b4)Tb4b4b4, T79c0ff15Tb4b4b4)Tb4b4b4,
Te6edf3durationTff7b72: T79c0ff500Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3clearSearchTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearSearchTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchQuery Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchResults Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isSearchFocused Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchTimeout Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3handleClickOutsideTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3searchContainer Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3searchContainerTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSearchFocused Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3checkScreenSizeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isMobileScreen Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72< T79c0ff640Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
T8b949e/* Ensure map takes full space */
Tb4b4b4:Tf0883edeepTff7b72(Tb4b4b4.T56d364ol-viewportTff7b72) Tb4b4b4{
Tff7b72border-radiusTb4b4b4: Tff7b72inheritTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364cursor-crosshair Tb4b4b4{
Tff7b72cursorTb4b4b4: Tff7b72crosshair Tff7b72!importantTb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────